package com.zcup.fileupload.service.impl;

import com.zcup.fileupload.entity.File;
import com.zcup.fileupload.entity.vo.FileById;
import com.zcup.fileupload.mapper.FileMapper;
import com.zcup.fileupload.service.FileService;
import com.zcup.fileupload.utils.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/*
    文件服务
 */
@Service
@Transactional
public class FileServiceImpl implements FileService {

    @Autowired
    private FileMapper fileMapper;

    /**
     * 更新文件下载次数
     * @return
     */
    @Override
    public int updateFileCounts(String fid) {

        return fileMapper.updateCounts(fid);
    }

    /**
     * 删除文件信息以及文件
     * @param id 文件id
     * @return  是否删除成功
     */
    @Override
    public boolean delFileById(String id) {

        boolean b = false;
        java.io.File file = new java.io.File(fileMapper.fileById(id).getUrl());
        try{
            b = FileUtils.delFile(file);
        }catch (RuntimeException e){
            System.out.println(e.getMessage());
        }

        int i = fileMapper.delById(id);

        return b && i>0;
    }

    /**
     * 根据文件id获取文件信息
     * @param fid   文件id
     * @return  文件信息
     */
    @Override
    public FileById getFileByFid(String fid) {
        return fileMapper.fileById(fid);
    }

    /**
     * 保存文件信息
     * @param file 上传的文件
     * @return  是否保存成功 返回结果>1即保存成功
     */
    @Override
    public int saveFileInfo(File file) {
        return fileMapper.saveFileInfo(file);
    }

    /**
     * 根据用户id获取文件列表
     * @param uid   用户id
     * @return  文件列表信息
     */
    @Override
    public List<FileById> getFilesById(String uid) {
        return fileMapper.findById(uid);
    }
}
